/**
 * 
 */
package org.rado.chessbastard.board.objects.actions;

import org.rado.chessbastard.board.exceptions.PieceActionException;
import org.rado.chessbastard.board.objects.IBoardSquare;
import org.rado.chessbatard.board.IChessBoard;

/**
 * @author rado
 *
 */
public interface IPieceAction {
	/**
	 * 
	 * @return IBoardSquare
	 */
	public IBoardSquare getInitialLocation();
	/**
	 * 
	 * @return IBoardSquare
	 */
	public IBoardSquare getTargetLocation();	
	/**
	 * 
	 * @return MoveType
	 */
	public ActionType getType();

	/**
	 * 
	 * @param chessBoard
	 * @throws PieceActionException
	 */
	public void execute(IChessBoard chessBoard) throws PieceActionException ;
}
